ABC163 D - Sum of Large Numbers
提出
code: python
n, k = map(int, input().split())
# 組み合わせですらどうするかよくわからない
# +N の端数の扱い
# 何個選ぶかがn-k通り
解答
code: python
n, k = map(int, input().split())
res = 0
# 異なる個数を選んで足した場合、それらが一致することは絶対にない
# K個選ぶ場合をそれぞれ独立に求める
for i in range(k, n+2):
first = i * (i-1) // 2
final = (n*2 - i+1) * i // 2
res += final - first + 1
print(res % 1000000007)
メモ
「作れる数が連続する整数になる」というの、実は結構よくある!!
提出
code: python
from collections import defaultdict
import itertools
n, k = list(map(int, input().split()))
# conbination計算量
# k, k+1, k+2 ... n+1個選ぶ
# それぞれに対して順列の和が異なる個数を求める。
# A, A+1, A+2, A+3
d = defaultdict(set)
ans = 0
for i in range(k, n+2):
for c in itertools.combinations(range(n+1), i):
ans += 1
print(ans)